Módulo 3 - Visualizaciones básicas en ggplot2
2024 -Módulo 3
Importancia de la visualización
Porqué y para qué visualizar.
Gramática de gráficos y conexión con ggplot2
Definición de gráfico estadístico, usando la GG.
¿Porqué usar ggplot2?
Veremos: Visualizaciones básicas con ggplot2 y uso de scales
La gramática gráfica responde las siguientes preguntas:
¿Qué es un gráfico estadístico
¿Cómo describir un gráfico?
¿Cómo crear un gráfico?
Un gráfico estadístico es un mapeo de los datos a atributos estéticos (ejem: color, forma, tamaño) de objetos geométricos (ejem: puntos, lineas, barras)
ggplot2 Paquete con un sustento teórico basado en la gramática gráfica.
Define la GGC (gramática gráfica en capas)
ggplot2 Componentes en gráficos con ggplot2:
data: datos a visualizar
aes: un conjunto de mapeos estéticos entre las variables en los datos y las propiedades visuales (ejem: color, tamaño).
layer: al menos una capa que describe como representar cada observación. Las capas son creadas con la función geom.
La visualización de datos se basa en los datos, resumir información.
Hay diferentes tipos de visualización para enfatizar en distintos aspectos de los datos.
Los datos contienen observaciones y variables, en una forma tabular ordenada las observaciones están en las filas, las variables en las columnas y en cada celda tenemos un único valor
ggplot2 aes())Libro “Fundamentals of Data visualization” link (Wilke 2019)
¿Cuáles son las visualizaciones más importantes?
Imposible de responder, pero algunos de ellos son:
Histogramas, gráfico de densidades, barras, de series de tiempo (todos en una dimensión )
Diagrama de dispersión, gráfico de caja lado a lado (2-dim), gráfico de coordenaddas paralelas, mosaico (dos dimensiones o más)
Mapas (información geográfica)
y más…
Diferentes tipos de visualizaciones debido al tipo diferente de variables.
Énfasis: cada gráfico puede mostrar un aspecto diferente de los datos.
Punto clave para hacer visualización: entender el tipo de variable que tenemos
Variable Continua: una variables con infinitos números de valores, como tiempo, peso.
Variable Discreta: variables numéricas que puede tomar un cierto número de valores. Ejemplo, “número de estudiantes en la clase”
Variable Categórica: variables que pueden ser definidas como grupos o categorías (color de pelo, nivel educativo, etc)
y más…
No hay reglas claras para hacer EDA (análisis exploratorio de datos) pero podemos empezar por algunas preguntas básicas:
¿Cuál es la variabilidad de cierta variable?
¿Cuál es la distribución de mis datos?
¿Hay alguna relación entre alguna de las variables seleccionadas?
¿Como covarian estas dos variables?
Para identificar que herramientas usar en EDA deberíamos identificar que tipo de variables a analizar
Ejemplo:
Variables Categóricas, nosotros podemos analizar la distribución usando un gráfico de barras.
Variables continuas, podemos analizar la distribución usando un histograma.
Histograma, gráfico de densidades, diagrama de puntos movidos y gráfico de caja
Cada gráfico enfatiza algo distinto de los datos: asimetría, modalidad, simetría, brechas, atípicos
No hay un gráfico correcto, todos son útiles en algún sentido
Covariación es la tendencia de variación conjunta para los valores de dos o más variables.
La mejor forma de detectar la covariación es visualizar la relación entre dos o más variables.
El tipo de variables es lo que va a definir como visualizar la covariación.
Es común explorar la distibución de una variable continua de acuerdo a una variable categórica
Histogramas (geom_histogram()) o densidades (geom_density()) coloreadas por una variable categórica para comparar la distribuciones para cada categoría
Gráfico de caja:
Vemos la distribución de los datos para variables continuas
Basado en las 5 medidas de resumen (min, Q1, Q2, Q3, max).
Atípicos ( \(Q1–1.5*IQR\) y \(Q3 + 1.5*IQR\))
Violín: es una combinación entre el gráfico de cajas y el de densidades
–
# A tibble: 6 × 7
total propina sexo fuma dia momento cantidad
<dbl> <dbl> <chr> <chr> <chr> <chr> <dbl>
1 17.0 1.01 F No Do Noche 2
2 10.3 1.66 M No Do Noche 3
3 21.0 3.5 M No Do Noche 3
4 23.7 3.31 M No Do Noche 2
5 24.6 3.61 F No Do Noche 4
6 25.3 4.71 M No Do Noche 4
geom_point().aspect.ratio es el ratio entre el ancho y el alto
pp + geom_point()p + geom_boxplot()p + geom_violin()Información a mostrar el conteo de observaciones para cada combinación
podemos usar geom_count(), geom_tile(), geom_bar() ….
geom_count() es una variante de geom_point().
Cuenta el número de observaciones en cada combinación y mapea el conteo en la correspondiente posición.
geom_tile() cada combinación de variables es pintada con un color que representa un valor de otra variable en escala continua de color.
Por defecto el más claro representa mayor cantidad.
geom_bar() sirve para describir la distribución de variables categóricas, para cada categoría la altura de la barra es proporcional al número de caso en cada grupo. Se puede representar alternativamente en terminos de proporción o porcentaje.
Si queremos representar más de una variable categórica usamos gráficos de barras apilados (stacked bar graph).
geom_bar()
Gráficos de barras apilados simples: pone los valores en segmentos uno atrás de otro para cada categoría. El valor total de una barra es la suma de todos los segmentos. Sirve para comparar el monto total para cada categoría.
Gráficos de barras apilados 100%: muestra el porcentaje para cada categoría al interior de un grupo. Esto hace más sencillo de ver las diferencias relativas entre grupos.
p + geom_bar()p + geom_bar(position="stack")p + geom_bar(position="dodge")p + geom_bar(position="fill")Los datos hay que convertirlos desde unidades datos (moneda, sexo, etc) a unidades gráficas, aes (color,forma, etc) que se pueden representar en la computadora.
La conversión es llamada escalado y es realizada por scales
Los scales controlan el mapeo de los datos a los atributos estéticos (aes)
Necesitamos un scale para cada aes y cada scale opera para todos los datos en el gráfico que permite un mapeo consistente entre los datos a los aes
Estas especificaciones estéticas que tienen sentido para R se describen en vignette("ggplot2-specs") link
Mapeo estético (aes) solamente dice que una variable debe ser mapeada a un elemento estético pero no dice cómo debe ser.
Cuando mapeo una variable a shape usando aes(shape = x) no especifico la forma (shape) particular que debe tomar, se usa la de defecto.
Cuando uso aes(color = z) no digo de que color debe ser
Describir el color, la forma, el tamaño etc (color, shape, size) a usar se hace mediante transformaciones en scale
x e ycolor y fillsizeshapelinetypeLas scales se modifican con una serie de funciones con el siguiente esquema de nombrado scale_<aesthetic>_<type>. Mirar scale_<tab> ver la lista de las funciones de scale.
ejemplo: scale_color_manual para cambiar el color de forma manual
scales disponiblesEquivalente a:
Cambio los límites del eje x y valores que se incluyen:
Cada observación representada como un punto cuya posición está de acuerdo a dos variables (posición horizontal y vertical)
Cada punto tiene tamaño, color y forma estos atributos son llamados elementos estéticos (inglés aesthetics aes )
Los aes son propiedades que pueden ser percibidas en el gráfico cada aes puede ser mapeado a una variable o fijado en un valor constante
total es mapeado a la posición horizontal, propina a la posición vertical y fuma al color. Tamaño y forma no son mapeados a variables (valor por defecto)
# A tibble: 3 × 3
total propina fuma
<dbl> <dbl> <chr>
1 17.0 1.01 No
2 10.3 1.66 No
3 21.0 3.5 No
| x | y | colour |
|---|---|---|
| 17.0 | 1.01 | No |
| 10.3 | 1.66 | No |
| 21.0 | 3.5 | No |
Los datos, mapeos estéticos, objetos geométricos y las transformaciones estadísticas forman una capa
Podemos tener un gráfico con muchas capas
La gramática de capas define componentes de un gráfico:
datos y conjunto de mapeos de variables a elementos estéticos
una o más capas, cada capa tiene un elemento geométrico, una transformación estadística, una posición y opcional datos y aes
Equivalente a :
stat: es el nombre de la transformación estadística a utilizar. Para que los datos sean usados como están sin transformar se usa stat ='identity'. Más info https://rpubs.com/hadley/ggplot2-layers
position: el método usado para ajustar sobreploteo.Más info https://rpubs.com/hadley/ggplot2-layers
Varios conjuntos de datos:
Varios conjuntos de datos:
p1 <- ggplot() +
layer(
data = propinas, mapping = aes(x = total, y = propina),
geom = "point", stat = "identity", position = "identity"
) +
scale_x_continuous() +
scale_y_continuous() +
coord_cartesian()
p1 +
layer(data = data.frame(x = 30, y = 6),
mapping = aes(x = x, y = y, color = I("red"),
size = I(10)), geom = 'point',
stat = 'identity', position ='identity') +
scale_x_continuous() +
scale_y_continuous() +
coord_cartesian()Si hay más de un conjunto de datos en el gráfico poner los datos en la capa que corresponda ser utilizados.
Si pongo los datos al inicio ggplot(data = propina) esos datos son usados en todas las capas
Si tengo una única capa la forma de especificar los aes no hace la diferencia pero si agrego capas hay diferencias según en que capa especifico el aes
Cuando substituimos geom_pont() por otro geom obtenemos un gráfico distinto. Los geom más comunes:
geom_smooth()geom_boxplot()geom_histogram()geom_bar()geom_path() y geom_lines()cada geom_ tiene asociados elementos estéticos particulares
Sobrescribe el scale si aplico dos veces el mismo
Material del curso está bajo licencia Creative Commons BY-NC-SA 3.0